package com.hmall.api.config;

import com.hmall.api.client.UserClient;
import com.hmall.api.client.fallback.ItemClientFallbackFactory;
import com.hmall.common.utils.UserContext;
import feign.Logger;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;


/**
 * ClassName: DefaultFeigenConfig
 * Package:
 * Description
 * 定义日志
 * NONE：不记录任何日志信息，这是默认值。
 * BASIC：仅记录请求的方法，URL 以及响应状态码和执行时间
 * HEADERS：在 BASIC 的基础上，额外记录了请求和响应的头信息
 * FULL：记录所有请求和响应的明细，包括头信息、请求体、元数据。
 *
 * @Author xw
 * @Create 2023/12/9 10:29
 */


public class DefaultFeigenConfig {


    @Bean
    public Logger.Level feignLogLevel() {
        return Logger.Level.FULL;
    }


    @Bean
    public RequestInterceptor userInfoRequestInterceptor() {
        return new RequestInterceptor() {
            @Override
            public void apply(RequestTemplate requestTemplate) {
                Long userId = UserContext.getUser();
                if (userId != null) {
                    requestTemplate.header("user-info", userId.toString());

                }
            }
        };
    }

    // Factory
    @Bean
    public ItemClientFallbackFactory itemClientFallbackFactory() {
        return new ItemClientFallbackFactory();
    }


}
